| Conditions | 1 |
| Paths | 1 |
| Total Lines | 189 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 3 | ||
| Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | /* jshint -W101, -W098 */ |
||
| 13 | describe('RequestBuilder setters', function() { |
||
| 14 | it('sets the network and time', function(cb) { |
||
| 15 | var network = "main"; |
||
| 16 | var now = new Date().getTime(); |
||
| 17 | var builder = new RequestBuilder(); |
||
| 18 | builder.setNetwork(network); |
||
| 19 | builder.setTime(now); |
||
| 20 | |||
| 21 | var test = function(builder) { |
||
| 22 | assert.equal(builder.network, network); |
||
| 23 | assert.equal(builder.time, now); |
||
| 24 | }; |
||
| 25 | |||
| 26 | test(builder); |
||
| 27 | test(encodeAndDecode(builder)); |
||
| 28 | cb(); |
||
| 29 | }); |
||
| 30 | |||
| 31 | it('sets the memo', function(cb) { |
||
| 32 | var memo = "thanks from btc.com"; |
||
| 33 | var now = new Date().getTime(); |
||
| 34 | var builder = new RequestBuilder(); |
||
| 35 | builder.setMemo(memo); |
||
| 36 | builder.setTime(now); |
||
| 37 | |||
| 38 | var test = function(builder) { |
||
| 39 | assert.equal(builder.memo, memo); |
||
| 40 | }; |
||
| 41 | |||
| 42 | test(builder); |
||
| 43 | test(encodeAndDecode(builder)); |
||
| 44 | cb(); |
||
| 45 | }); |
||
| 46 | |||
| 47 | it('sets the expire time', function(cb) { |
||
| 48 | var now = new Date().getTime(); |
||
| 49 | var expireTime = new Date().getTime(); |
||
| 50 | var builder = new RequestBuilder(); |
||
| 51 | builder.setExpires(expireTime); |
||
| 52 | builder.setTime(now); |
||
| 53 | |||
| 54 | var test = function(builder) { |
||
| 55 | assert.equal(builder.expires, expireTime); |
||
| 56 | }; |
||
| 57 | |||
| 58 | test(builder); |
||
| 59 | test(encodeAndDecode(builder)); |
||
| 60 | cb(); |
||
| 61 | }); |
||
| 62 | |||
| 63 | it('sets the payment url', function(cb) { |
||
| 64 | var paymentUrl = "https://webstore.com/payments?id=correcthorsebatterystaple-ie-random"; |
||
| 65 | var builder = new RequestBuilder(); |
||
| 66 | builder.setPaymentUrl(paymentUrl); |
||
| 67 | builder.setTime(new Date().getTime()); |
||
| 68 | |||
| 69 | var test = function(builder) { |
||
| 70 | assert.equal(builder.paymentUrl, paymentUrl); |
||
| 71 | }; |
||
| 72 | |||
| 73 | test(builder); |
||
| 74 | test(encodeAndDecode(builder)); |
||
| 75 | cb(); |
||
| 76 | }); |
||
| 77 | |||
| 78 | it('sets merchant data', function(cb) { |
||
| 79 | var merchantData = new Buffer("4cf6403a-b5a3-11e7-abc4-cec278b6b50a"); |
||
| 80 | var builder = new RequestBuilder(); |
||
| 81 | builder.setMerchantData(merchantData); |
||
| 82 | builder.setTime(new Date().getTime()); |
||
| 83 | |||
| 84 | var test = function(builder) { |
||
| 85 | var m = Buffer.from(builder.merchantData); |
||
| 86 | assert.equal(m.toString('hex'), merchantData.toString('hex')); |
||
| 87 | }; |
||
| 88 | |||
| 89 | test(builder); |
||
| 90 | test(encodeAndDecode(builder)); |
||
| 91 | cb(); |
||
| 92 | }); |
||
| 93 | |||
| 94 | it('sets an output', function(cb) { |
||
| 95 | var txOut = { |
||
| 96 | amount: 1, |
||
| 97 | script: Buffer.from('42', 'hex') |
||
| 98 | }; |
||
| 99 | |||
| 100 | var builder = new RequestBuilder(); |
||
| 101 | builder.addOutput(txOut); |
||
| 102 | builder.setTime(new Date().getTime()); |
||
| 103 | |||
| 104 | var test = function(builder) { |
||
| 105 | assert.equal(1, builder.outputs.length); |
||
| 106 | |||
| 107 | var out = builder.outputs[0]; |
||
| 108 | assert.equal(out.amount, txOut.amount); |
||
| 109 | |||
| 110 | var outScript = Buffer.from(out.script); |
||
| 111 | assert.equal(outScript.toString('hex'), txOut.script.toString('hex')); |
||
| 112 | }; |
||
| 113 | |||
| 114 | test(builder); |
||
| 115 | test(encodeAndDecode(builder)); |
||
| 116 | |||
| 117 | cb(); |
||
| 118 | }); |
||
| 119 | |||
| 120 | it('sets outputs', function(cb) { |
||
| 121 | var txOut1 = { |
||
| 122 | amount: 1, |
||
| 123 | script: Buffer.from('', 'hex') |
||
| 124 | }; |
||
| 125 | var txOut2 = { |
||
| 126 | amount: 1, |
||
| 127 | script: Buffer.from('', 'hex') |
||
| 128 | }; |
||
| 129 | var builder = new RequestBuilder(); |
||
| 130 | builder.setOutputs([txOut1, txOut2]); |
||
| 131 | builder.setTime(new Date().getTime()); |
||
| 132 | |||
| 133 | var test = function(builder) { |
||
| 134 | assert.equal(2, builder.outputs.length); |
||
| 135 | assert.equal(builder.outputs[0].amount, txOut1.amount); |
||
| 136 | assert.equal(builder.outputs[0].script.toString('hex'), txOut1.script.toString('hex')); |
||
| 137 | |||
| 138 | assert.equal(builder.outputs[1].amount, txOut2.amount); |
||
| 139 | assert.equal(builder.outputs[1].script.toString('hex'), txOut2.script.toString('hex')); |
||
| 140 | }; |
||
| 141 | |||
| 142 | test(builder); |
||
| 143 | test(encodeAndDecode(builder)); |
||
| 144 | |||
| 145 | cb(); |
||
| 146 | }); |
||
| 147 | |||
| 148 | it('builds PaymentDetails', function(cb) { |
||
| 149 | var time = new Date().getTime(); |
||
| 150 | |||
| 151 | // obviously invalid script, shout out p2pool ;) |
||
| 152 | var txOut = { |
||
| 153 | amount: 1, |
||
| 154 | script: Buffer.from('ascii') |
||
| 155 | }; |
||
| 156 | var network = "main"; |
||
| 157 | |||
| 158 | var builder = new RequestBuilder(); |
||
| 159 | builder.setTime(time); |
||
| 160 | builder.setNetwork(network); |
||
| 161 | builder.addOutput(txOut); |
||
| 162 | |||
| 163 | var test = function(builder) { |
||
| 164 | assert.equal(builder.time, time); |
||
| 165 | assert.equal(builder.network, network); |
||
| 166 | assert.equal(builder.outputs[0].amount, txOut.amount); |
||
| 167 | |||
| 168 | var script = Buffer.from(builder.outputs[0].script); |
||
| 169 | assert.equal(script.toString('binary'), txOut.script.toString('binary')); |
||
| 170 | }; |
||
| 171 | |||
| 172 | test(builder); |
||
| 173 | test(builder.buildDetails()); |
||
| 174 | test(encodeAndDecode(builder)); |
||
| 175 | |||
| 176 | cb(); |
||
| 177 | }); |
||
| 178 | |||
| 179 | it('builds PaymentRequest', function(cb) { |
||
| 180 | var time = new Date().getTime(); |
||
| 181 | |||
| 182 | // obviously invalid script, shout out p2pool ;) |
||
| 183 | var txOut = { |
||
| 184 | amount: 1, |
||
| 185 | script: Buffer.from('ascii') |
||
| 186 | }; |
||
| 187 | var network = "main"; |
||
| 188 | |||
| 189 | var builder = new RequestBuilder(); |
||
| 190 | builder.setTime(time); |
||
| 191 | builder.setNetwork(network); |
||
| 192 | builder.addOutput(txOut); |
||
| 193 | |||
| 194 | var encodedDetails = ProtoBuf.PaymentDetails.encode(builder.buildDetails()).finish(); |
||
| 195 | var request = builder.buildRequest(); |
||
| 196 | |||
| 197 | assert.equal(request.serialized_payment_details.toString('hex'), encodedDetails.toString('hex')); |
||
| 198 | |||
| 199 | cb(); |
||
| 200 | }); |
||
| 201 | }); |
||
| 202 |